package com.vhall.component.entity.lottery.vo;


import com.fasterxml.jackson.annotation.JsonProperty;
import com.vhall.component.framework.common.annotation.ParamName;
import lombok.Data;

import javax.validation.constraints.*;

/**
 * 发起抽奖 V4组件发起抽奖请求vo
 *
 * @author shenghua.luo
 */
@Data
public class LotteryV4AddReqVO {

    /**
     * VSS临时令牌
     */
    @ParamName("vss_token")
    @JsonProperty("vss_token")
    private String vssToken;

    /**
     * 房间ID
     */
    @ParamName("room_id")
    @JsonProperty("room_id")
    @NotBlank(message = "房间ID不能为空")
    private String roomId;

    /**
     * 抽奖规则 1：随机抽奖  2：满足条件的抽奖
     */
    @ParamName("lottery_rule")
    @JsonProperty("lottery_rule")
    @Max(value = 2, message = "lotteryRule参数错误,1|2")
    @Min(value = 1, message = "lotteryRule参数错误,1|2")
    @Positive(message = "lotteryRule参数错误,1|2")
    @NotNull(message = "lottery_rule参数异常")
    private Integer lotteryRule;

    /**
     * 抽奖类型
     *  1 参与点赞的用户 2 关注当前直播栏目的用户 3 发表指定评论的用户
     */
    @ParamName("lottery_type")
    @JsonProperty("lottery_type")
    @Max(value = 7, message = "lottery_type参数错误(1-7)")
    @Min(value = 1, message = "lottery_type参数错误(1-7)")
    @PositiveOrZero(message = "lottery_type参数错误(1-7)")
    @NotNull(message = "lottery_type参数异常")
    private Integer lotteryType;

    /**
     * 中奖人数
     */
    @ParamName("lottery_number")
    @JsonProperty("lottery_number")
    @PositiveOrZero(message = "lottery_number参数错误")
    @NotNull(message = "lottery_number参数错误")
    private Integer lotteryNumber;

    /**
     * 扩展信息:包含中奖人员信息收集设置
     */
    @ParamName("extension")
    @JsonProperty("extension")
//    @NotBlank(message = "扩展信息:包含中奖人员信息收集设置不能为空")
    private String extension;

    /**
     * 中奖用户ID，多中奖用户ID用逗号分割
     */
    @ParamName("lottery_user_ids")
    @JsonProperty("lottery_user_ids")
    private String lotteryUserIds;

    /**
     * 是否排除已中奖者 1排除 0不排除
     */
    @ParamName("winner_out")
    @JsonProperty("winner_out")
    @Max(value = 1, message = "winner_out参数异常(0-1)")
    @Min(value = 0, message = "winner_out参数异常(0-1)")
    @PositiveOrZero(message = "winner_out参数异常")
//    @NotNull(message = "winner_out参数异常")
    private Integer winnerOut;

    /**
     * 抽奖标题
     */
    @ParamName("lottery_rule_text")
    @JsonProperty("lottery_rule_text")
    @NotBlank(message = "lottery_rule_text不能为空")
    private String lotteryRuleText;

    /**
     * 时长
     */
    @ParamName("duration")
    @JsonProperty("duration")
    @NotNull(message = "duration不能为空")
    private Integer duration;
    /**
     * 奖品类型 1:实物奖品
     */
    @ParamName("lottery_prize_type")
    @JsonProperty("lottery_prize_type")
    @NotNull(message = "lottery_prize_type不能为空")
    private Integer lotteryPrizeType;

    /**
     * 参与抽奖标识(评论内容)
     */
    @ParamName("lottery_join_mark")
    @JsonProperty("lottery_join_mark")
    private String lotteryJoinMark;
    /**
     * 奖品图片
     */
    @ParamName("award_snapshoot")
    @JsonProperty("award_snapshoot")
    @NotBlank(message = "award_snapshoot不能为空")
    private String awardSnapshoot;

}
